package gostrings

import "strings"

// SubBetween 截取指定字符串中间部分，不包括标识字符串
func SubBetween(str, before, after string) string {
	if str == EMPTY || before == EMPTY || after == EMPTY {
		return EMPTY
	}
	beforeIndex := strings.Index(str, before)
	if beforeIndex < 0 {
		return EMPTY
	}
	start := beforeIndex + len(before)
	afterIndex := strings.Index(str[start:], after)
	if afterIndex < 0 {
		return EMPTY
	}
	return str[start : start+afterIndex]
}

// SubAfter 截取分隔字符串之后的字符串，不包括分隔字符串。
// 如果给定的字符串为空串（""），返回原字符串。
// 如果分隔字符串为空串（""），则返回空串。
// 如果分隔字符串未找到，返回空串。
func SubAfter(str, before string) string {
	if str == EMPTY || before == EMPTY {
		return EMPTY
	}
	beforeIndex := strings.Index(str, before)
	if beforeIndex < 0 {
		return EMPTY
	}
	return str[beforeIndex+len(before):]
}

// SubBefore 截取分隔字符串之前的字符串，不包括分隔字符串。
// 如果给定的字符串为空串（""），返回原字符串。
// 如果分隔字符串为空串（""），则返回空串。
// 如果分隔字符串未找到，返回空串。
func SubBefore(str, after string) string {
	if str == EMPTY || after == EMPTY {
		return EMPTY
	}
	afterIndex := strings.Index(str, after)
	if afterIndex < 0 {
		return EMPTY
	}
	return str[:afterIndex]
}
